#pragma once

#include <sail.h>
#include "Rectangle.h"

using namespace System;

namespace ManagedSail {
/*
	public enum class NetworkProtocol 
	{
		TCP, 
		UDP, 
		LambdaStream
	};

	public enum CompressionType 
	{
		NoCompression,
		RLE,
		LUV,
		DXT
	};

	public enum PixelFormat
	{
		Null, 
		format555, 
		format555_INV, 
		format565, 
		format565_INV, 
		format888, 
		format888_INV, 
		format8888, 
		format8888_INV, 
		formatRLE, 
		formatLUV,
		formatDXT, 
		formatYUV
	};

	public enum AudioMode 
	{
		Capture = 1, 
		Play = 2, 
		Read = 4, 
		Write = 8, 
		App = 16, 
		FwCapture = 32
	};

	public enum SampleFormat
	{
		Float32, 
		Int16, 
		Int8, 
		Uint8
	};

	public enum SyncType 
	{
		None, 
		AudioDriven, 
		GraphicDriven
	};

	public enum RowOrder
	{
		TopToBottom = 0,
		BottomToTop = 1
	};

	public ref class SailConfig
	{
	public:

		String^  appName;  // application name
		String^  masterIP;  // the SAIL Master IP
		int   nwID;
		String^  fsIP;
		int   fsPort;
		String^  	bridgeIP;
		int 	bridgePort;

		int	syncPort;
		int	msgPort;
		int   appID;	// ID for each app instance
		String^ launcher;

		int	syncMode;
		int	streamMode;
		int	rcvBufSize;  // stream receiving buffer size

		int   rank;		// the rank of this node	
		int   resX;		// the width of application buffer in pixels
		int   resY;		// the height of application buffer in pixels
		SageRectangle^   imageMap;  // the location of sub-image rendered by this node in the whole app image
		PixelFormat pixFmt; // pixel format defined in sage.h 
		RowOrder   rowOrd;      // row order flag 
		bool  master;      // is master node or not
		bool  rendering;   // rendering or control only
		bool  asyncUpdate;
		CompressionType compression;

		long totalFrames;

		bool audioOn;                           // audio on/off flag
		AudioMode audioMode;        // audio mode : capture, play, read, write
		int  audioPort;                         // audio port number
		int  audioDeviceNum;            // device number
		SampleFormat sampleFmt;        // audio sampling format : float, short, char, unsigned char
		long samplingRate;                      // audio sampling rate : default-44100
		int  channels;                          // number of audio channel
		int  framePerBuffer;            // audio frames per buffer
		SyncType syncType;
		String^   audioFileName;  // application name
		int     audioBuffSize;

		String^  streamIP;
		int  frameRate;

		int bufWarnLimit, bufIncRatio, maxBlockLoss, ackInterval;
		int senderCheckInterval, minSendRate, maxSendRate;

		SailConfig();
		void Init(String^ fname); //initialize app configuration by config file
		void SetApplicationName(String^ applicationName);
	};
*/
}